home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr11 / nr3_tech.zip / EMSMEM.TXT < prev    next >
Text File  |  1993-06-18  |  6KB  |  139 lines

  1. A History of the EMS Page frame.
  2.  
  3. The EMS page frame was a wonderful thing in 1985 when it was
  4. invented.  Back then the 286 was only just coming on to the
  5. scene and the only way to access more memory was using a
  6. technique called paging, dating back to CP/M and Z80
  7. systems.  So Lotus, Intel, and Microsoft got together and
  8. created a paging specification for Intel 8x86 based PCs.
  9. This was known as the LIM EMS specification.
  10.  
  11. Paging involves using a small region of memory which in the
  12. LIM EMS is called the EMS page frame.  This small region is
  13. a Window on a much larger pool of memory which can be
  14. accessed by making parts of the large pool available within
  15. the page frame, one part at a time.  This technique worked
  16. well for what it was designed for, and allowed Lotus users
  17. to create much larger spreadsheets.
  18.  
  19. Later Borland and AST joined the fray and created an
  20. extension to the specification, known as EEMS.  This
  21. extension provided more flexibility and was eventually
  22. rolled into LIM EMS as version 4.0 of the LIM EMS spec.
  23.  
  24. That was then.....
  25.  
  26. Today the prevailing CPU is the 386 which can address
  27. directly up to 4Gb.  Today, Paging is not even associated
  28. with EMS, but rather with virtual memory.  And the only
  29. programs still using EMS are those that haven't been updated
  30. in several years, or are designed to be used in an 8088 XT
  31. environment.
  32.  
  33. All newer programs, including WordPerfect 6.0, MS Word 6,
  34. Lotus 3, Paradox, Foxpro, MS and Borland Compilers, and so
  35. on, are written to use DOS extenders.  DOS extender
  36. technology allows programs to access extra memory directly
  37. on 286 and above systems.  This means that no page switching
  38. has to take place, and programs can create large and complex
  39. data structures which are not possible in a straight 640K
  40. environment even with EMS.
  41.  
  42. These programs are also easier to engineer because the
  43. actual program code can be larger than 640K.  So DOS
  44. extended programs run faster and can be more complex with
  45. less likelihood of bugs.  Which is exactly why Lotus
  46. Microsoft and Borland, all pioneers and developers of the
  47. EMS specification, have switched to DOS Extenders.
  48.  
  49. Device drivers and TSRs and EMS
  50.  
  51. Some drivers and TSRs can make use of EMS to place buffers
  52. and other data in EMS, using the page frame.  There are two
  53. problems with this approach:  Performance, and reliability.
  54.  
  55. By placing buffers in EMS the programs must first access the
  56. EMS memory manager to switch their buffers into memory so
  57. that they can access them.  This is the root of both
  58. problems.  The switching process is slow as TSRs must issue
  59. several EMS calls in order to access their data.  These
  60. calls MUST be issued each time any access is made to the EMS
  61. stored data, slowing down the driver or TSR.
  62.  
  63. The second problem is indirectly caused by this same issue.
  64. Drivers that require access to data during interrupt
  65. processing (most drivers do) frequently have to keep
  66. interrupts disabled while they issue the EMS calls.  This
  67. leads to lost interrupts and data overruns because several
  68. interrupts come in during the time that the interrupts are
  69. disabled, and are lost because they could not be processed
  70. in time.
  71.  
  72. Also, if several drivers are using EMS at the same time
  73. conflicts can arise, particularly in the presence of
  74. background multi-processing TSRs like PC-Kwik and NCACHE, or
  75. Windows.  Code running in the EMS page frame (like EMSNETX)
  76. can get overwritten, and I/O must frequently be redirected
  77. if it is destined for the page frame, causing even more
  78. latency.
  79.  
  80. A common example of this is lost key strokes or "stuck"
  81. shift keys when several of these kinds of TSRs are loaded.
  82. Unfortunately, this problem is so common that we've put
  83. several features directly into the memory manager to help
  84. programs deal with this problem.  This is part of why
  85. Microsoft abandoned the approach, which they tried in DOS 4,
  86. of placing Disk BUFFERS in EMS.
  87.  
  88. Drivers and TSRs are better off with the extra memory.
  89.  
  90. If you use drivers that make use of EMS you are usually
  91. better off letting these drivers place their buffers in
  92. upper memory, and turning off the Page Frame.  Take the case
  93. of MSCDEX and STACKER, both of which can place their buffers
  94. in EMS.  The buffers generally occupy 5 to 20K for MSCDEX
  95. and 20 to 30K for STACKER.  If you disable EMS you'll end up
  96. with 14 to 39K of extra upper memory and both programs will
  97. perform MUCH faster.
  98.  
  99. Even Games which use EMS can generally be made to run faster
  100. by simply copying the entire game onto a RAM disk, and
  101. making XMS available.
  102.  
  103. Cloaking vs EMS Stealthing performance.
  104.  
  105. This is also why we created Cloaking.  Cloaking is a method
  106. of creating upper memory by providing the equivalent of a
  107. DOS extender for the BIOS.  Using our Cloaking drivers the
  108. BIOS and other drivers and TSRs can run directly in extended
  109. memory like DOS extended programs.
  110.  
  111. We chose this approach because of its unlimited potential,
  112. and unequaled performance.  The simplest EMS call requires
  113. TWO protected mode transitions and a flushing of all the
  114. CPUs look up tables.  In our measurements the fastest EMS
  115. call is 40 times slower than a V86 to protected mode
  116. transition.  So we decided against trying Stealth's approach
  117. of mapping the BIOS into EMS, and developed Cloaking.
  118.  
  119. EMS and Windows
  120.  
  121. Finally, Windows applications do not make any use of EMS, in
  122. fact Windows does not provide any EMS emulation to Windows
  123. apps even if EMS was available in the system.  So if you use
  124. Windows, EMS is basically a drag.  Windows has to load an
  125. extra VxD to handle EMS, and has to reserve memory and
  126. resources for EMS each time a DOS VM starts up.  So having
  127. EMS available slows down Windows DOS apps even if they don't
  128. use it.
  129.  
  130. In Conclusion
  131.  
  132. Unless you use Lotus 2.2 or Wordperfect 5.1 regularly, you
  133. should seriously consider disabling your EMS in favor of
  134. more upper memory.  (see our note on conventional vs total
  135. memory for info how Windows benefits from upper memory).
  136.  
  137. Copyright (c) 1993, Helix Software Co.
  138.  
  139.